#include<iostream>
using namespace std;
typedef struct node{
	int data;
	struct node *lchild;
	struct node *rchild;
}BTNode;
BTNode *CreateBT1(char *post,char *in,int n);
void PreOrder(BTNode *b);
int flag=0;
int main()
{
	int N;
	cin>>N;
	char post[30],in[30];
	 int i, j;  
    for(i = 0; i < N; i++) {  
        scanf("%d", &post[i]);  
    }  
    for(i = 0; i < N; i++) {  
        scanf("%d", &in[i]);  
    }  
	BTNode *root = CreateBT1(post,in,N);
	PreOrder(root);
	return 0;
}
BTNode *CreateBT1(char *post,char *in,int n)
{
	BTNode *b;
	char r,*p;
	int k;
	if(n<=0) return NULL;
	r=*(post+n-1);
	b=new BTNode;
	b->data=r;
	for(p=in;p<in+n;p++)
	 if(*p==r) break;
	k=p-in;
	b->lchild = CreateBT1(post,in,k);
	b->rchild = CreateBT1(post+k,p+1,n-k-1);
	return b;
}
void PreOrder(BTNode *b)
{
	if(b!=NULL)
	{
		if(flag==0)
		cout<<"Preorder: "<<b->data;
		else
		cout<<" "<<b->data;
		flag=1;
		PreOrder(b->lchild);
		PreOrder(b->rchild);
	}
}
